Python多处理器或线程



我的代码

import time
from multiprocessing.pool import ThreadPool
from concurrent.futures import ThreadPoolExecutor
def print_function(tests):
while True:
print tests
time.sleep(2)

executor = ThreadPoolExecutor(max_workers=2)
for i in range(5):
a = executor.submit(print_function(i))

输出0 0 0 0 0 0 0 0...

但是我想要012345012345012345…

我该怎么做?

在行

a = executor.submit(print_function(i))
^^^^^^^^^^^^^^^^^

您已经在调用函数了。由于它有一个while True,它永远不会结束,因此永远不会到达submit()

解决方案是将函数作为引用和自变量分别传递:

a = executor.submit(print_function, i)

但是,请注意,您不会得到您喜欢的输出(012345(,因为a(范围将停止在4,b(您只启动2个工作进程,c(操作系统将选择运行哪个进程,因此这看起来是随机的(更像310254(。

相关内容

  • 没有找到相关文章

最新更新