Python线程支持脚本的其余部分

Spa*_*arc 1 python multithreading

在Windows 7 Pro 64位上运行Python 3.2.

好的,我在这里有一些非常基本的代码,这些代码并不像我想要的那样.

#!/usr/bin/env python

import time
import threading

def shutdown(sleeptime):
    time.sleep(sleeptime)
    print('I have executed')

threading.Thread(target = shutdown(5)).start()
print('I go first')
Run Code Online (Sandbox Code Playgroud)

这个想法是脚本运行,它启动一个休眠5秒钟的线程然后打印出"我已执行".与此同时,剧本继续前进并打印出"我先走了".

实际发生的是脚本启动线程,一切都等待它完成然后继续.显然我没有正确地进行线程化,但是我很难找到使用Python 3进行线程化的简单示例.

Vin*_*irk 10

你的陈述:

threading.Thread(target = shutdown(5)).start()
Run Code Online (Sandbox Code Playgroud)

可以等效地写成:

x = shutdown(5)
threading.Thread(target = x).start()
Run Code Online (Sandbox Code Playgroud)

即你先调用shutdown,然后将结果传递给Thread构造函数.

你需要将你的函数传递给Thread,而不是调用它和你的参数列表:

threading.Thread(target = shutdown, args = (5,)).start()
Run Code Online (Sandbox Code Playgroud)