tca*_*cas 1 python multithreading
在 Python 中,我试图让一个无限循环同时开始并行运行,一个简单的例子是:
from threading import Thread
def func(argument):
while True:
print(argument)
def main():
Thread(target=func("1")).start()
Thread(target=func("2")).start()
Thread(target=func("3")).start()
Thread(target=func("4")).start()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
现在只有第一个线程运行,所以结果是:
1
1
1
1
....
Run Code Online (Sandbox Code Playgroud)
它应该是:
1
2
3
4
....
Run Code Online (Sandbox Code Playgroud)
我发现了几个类似的问题,但提供的解决方案似乎都不适合我,包括join在线程上使用。
因此,如果有人知道我的问题的解决方案,将不胜感激。
提前致谢!
第一个线程未启动。您正在调用funcinmain并尝试将其返回值设置为target,但它永远运行并且永远不会创建第一个线程。你要:
from threading import Thread
def func(argument):
while True:
print(argument)
def main():
Thread(target=func,args=("1",)).start()
Thread(target=func,args=("2",)).start()
Thread(target=func,args=("3",)).start()
Thread(target=func,args=("4",)).start()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这将func作为对象传递。启动线程将使用指定的 args 元组调用该对象。
| 归档时间: |
|
| 查看次数: |
2747 次 |
| 最近记录: |