如何在同一代码位置创建新线程 [蟒蛇3] 编辑

问题描述

我想知道是否可以(如果可以,那么如何)在不更改其在代码中的“位置”的情况下创建新线程。

一个例子可能会更好地解释它:

import time
import random

print('foo') # Should be printed only once
new_thread_here()
time.sleep(random.randint(1,5))
print('end') # This should be printed twice (once per thread),each with a random sleep time (eg. 2 and 4 seconds)

无论如何要实现这个,或类似的东西??

如果相关,我的具体任务涉及构建一个异步上下文管理器,它将在单独的线程中的上下文中运行代码,而主线程跳过它并在代码中继续。

编辑

一个例子:

def foo():
    print('First')
    print('Second')
    new_thread_here()  # This is where I would make the new thread
    print('Third')     # This is where the new thread would start

foo()
print('Done')

现在,如果我们看看 main 线程的预期结果:

>>> First
>>> Second
>>> Third
>>> Done

现在,让我们看看第二个(创建的)线程的预期结果。考虑它在 new_thread_here() 调用之后直接启动:

>>> Third
>>> Done

所以函数的最终输出将是(假设线程以相同的速度运行):

>>> First
>>> Second
>>> Third
>>> Third
>>> Done
>>> Done

我知道这可能是不可能的,但我不是线程处理方面的专家,所以我想在这里提问。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...