本文实例讲述了python开发之thread实现布朗运动的方法。分享给大家供大家参考,具体如下:
这里我将给大家介绍有关python中thread来实现布朗运动的一个例子
下面是运行效果:
代码部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# Brownian motion -- an example of a multi-threaded Tkinter program.
from tkinter import *
import random
import threading
import time
import sys
#画布大小
WIDTH = 400
HEIGHT = 300
SIGMA = 10
BUZZ = 2
RADIUS = 2
LAMBDA = 10
FILL = 'red'
stop = 0 # Set when main loop exits
def particle(canvas):
r = RADIUS
x = random.gauss(WIDTH / 2.0 , SIGMA)
y = random.gauss(HEIGHT / 2.0 , SIGMA)
p = canvas.create_oval(x - r, y - r, x + r, y + r, fill = FILL)
while not stop:
dx = random.gauss( 0 , BUZZ)
dy = random.gauss( 0 , BUZZ)
dt = random.expovariate(LAMBDA)
try :
canvas.move(p, dx, dy)
except TclError:
break
time.sleep(dt)
def main():
global stop
root = Tk()
canvas = Canvas(root, width = WIDTH, height = HEIGHT)
canvas.pack(fill = 'both' , expand = 1 )
#粒子数目
np = 30
if sys.argv[ 1 :]:
np = int (sys.argv[ 1 ])
for i in range (np):
t = threading.Thread(target = particle, args = (canvas,))
t.start()
try :
root.mainloop()
finally :
stop = 1
main()
|
希望本文所述对大家Python程序设计有所帮助。