本文实例讲述了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程序设计有所帮助。