我正在写一个python程序,在main函数中我正在启动一个连续运行的线程.启动线程后,main函数进入while循环,连续进行用户输入.如果子线程中有异常,我也想结束main函数.最好的方法是什么?
提前致谢
我正在尝试在Python中做一些相对简单的事情,我很惊讶这对于它应该是多么简单而言并不起作用.
我在这里只是想连接三个简单的字符串.输入raw_input的输入在"abc"
以下所有情况下:
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1' + proj + 'test2'
print ProjRegex
Run Code Online (Sandbox Code Playgroud)
产量:
abc
test2abc
Run Code Online (Sandbox Code Playgroud)
案例2
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1%stest2' % (proj)
print ProjRegex
Run Code Online (Sandbox Code Playgroud)
产量:
abc
test2abc
Run Code Online (Sandbox Code Playgroud)
请注意,在两种情况下,不是"test1abctest2"
按预期打印,而是将test2替换为test1.
然后我注意到如果我没有使用raw_input,如果我说:
proj = "abc"
ProjRegex = 'test1' + proj + 'test2'
Run Code Online (Sandbox Code Playgroud)
然后它表现得像预期的那样.
那么发生的事情raw_input()
是想要进行字符串替换吗?我的理解是它需要键盘输入,剥离换行符,并以字符串形式返回.
from random import randint
shifts = [4, 4.2, 5, 6, 7]
days_names = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday']
workers_names = ['Itai', 'Or', 'Reut', 'Kuka', 'Aviel']
counter = 1
def shift_arrange(worker):
for day in days.values():
counter+=1
global avilable_shifts
avilable_shifts = check_avilable_shifts(day)
if not random_shifte_selector(worker,day): soft_reset(worker)
Run Code Online (Sandbox Code Playgroud)
我将计数器设置为全局变量,当我尝试运行此代码时,出现局部变量错误:
Traceback (most recent call last):
File "C:\Or\mypy\shift creator\shift cretor.py", line 144, in <module>
for w in workers.values(): shift_arrange(w)
File "C:\Or\mypy\shift creator\shift cretor.py", line 105, in shift_arrange
counter+=1
UnboundLocalError: local variable 'counter' referenced before assignmen
Run Code Online (Sandbox Code Playgroud)
我看到有人在这里问这个问题,他删除了他的 …
我正在尝试使用Smack将带有负载的项目发布到pubsub节点,但到目前为止我还没有管理.我创建了节点并设置其配置以提供有效负载(setDeliverPayloads = true).我使用send方法发送带有效负载的项目.
node.send(new PayloadItem(this.clientNodeName+"*" + System.currentTimeMillis(), new SimplePayload("my book", "books:pubsub:simple", "")));
Run Code Online (Sandbox Code Playgroud)
然而,该项目没有有效载荷.构造的IQ也没有有效载荷.正如我从smack的调试面板中看到的那样
这是由smack构建并发送到pubsub服务(显然没有负载)
<iq id="1ha20-11" to="pubsub.127.0.0.1" type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="autoIncrement">
<item id="autoIncrement*1333380921970"/>
</publish>
</pubsub>
</iq>
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助来解决这个问题.当然我仍然可以使用本机IQ消息,但我会尽量避免使用smack API中的PubSubManager.
我从gdb得到以下错误:
*** glibc detected *** /.root0/autohome/u132/hsreekum/ipopt/ipopt/debug/Ipopt/examples/ex3/ex3: free(): invalid next size (fast): 0x0000000120052b60 ***
Run Code Online (Sandbox Code Playgroud)
这是回溯:
#0 0x000000555626b264 in raise () from /lib/libc.so.6
#1 0x000000555626cc6c in abort () from /lib/libc.so.6
#2 0x00000055562a7b9c in __libc_message () from /lib/libc.so.6
#3 0x00000055562aeabc in malloc_printerr () from /lib/libc.so.6
#4 0x00000055562b036c in free () from /lib/libc.so.6
#5 0x000000555561ddd0 in Ipopt::TNLPAdapter::~TNLPAdapter ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#6 0x00000055556a9910 in Ipopt::GradientScaling::~GradientScaling ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#7 0x00000055557241b8 in Ipopt::OrigIpoptNLP::~OrigIpoptNLP ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#8 0x00000055556ae7f0 in Ipopt::IpoptAlgorithm::~IpoptAlgorithm ()
from /home/ba01/u132/hsreekum/ipopt/ipopt/build/lib/libipopt.so.1
#9 0x0000005555602278 in …
Run Code Online (Sandbox Code Playgroud) 我想实现一个类似map
的函数,它保留输入序列的类型. map
不保留它:
map(str, (8, 9)) # input is a tuple
=> ['8', '9'] # output is a list
Run Code Online (Sandbox Code Playgroud)
我提出的一种方法是:
def map2(f, seq):
return type(seq)( f(x) for x in seq )
map2(str, (1,2))
=> ('1', '2')
map2(str, [3,4])
=> ['3', '4']
map2(str, deque([5,6]))
=> deque(['5', '6'])
Run Code Online (Sandbox Code Playgroud)
但是,如果seq
是迭代器/生成器,则不起作用. imap
适用于这种情况.
所以我的问题是:
map2
,支持列表,元组和其他许多方法?map2
到也支持生成器(就像imap
这样)?显然,我想避免:try: return map2(...) except TypeError: return imap(...)
我正在寻找类似的东西的原因是我正在编写一个函数装饰器,它将返回值从X型转换为Y.如果原始函数返回一个序列(让我们假设一个序列只能是一个列表,我认为它是一个X序列,我想把它转换成Y的相应序列(同时保留序列的类型).
你可能已经意识到,我正在使用python 2.7,但python 3也很有用.
如何在主页visual studio 2013上启用rss新闻源?因为它是在2012年的视觉工作室.
我试图杀死我的python进程并始终在那里.
也尝试使用sudo
,如果我使用顶级命令,该过程仍然存在.
python脚本是由我创建的,没有其他进程在不断调用.
ubuntu@ip-*******:~/Desktop/Servidor$ pkill python -e
python killed (pid 1284)
ubuntu@ip-*******:~/Desktop/Servidor$ pkill python -e
python killed (pid 1284)
ubuntu@ip-*******:~/Desktop/Servidor$ pkill python -e
python killed (pid 1284)
Run Code Online (Sandbox Code Playgroud) 我有一个错误是由检查"如果x在发电机中"的变化结果引起的
def primes(upper_limit):
for n in range(2, upper_limit):
if all(n % i > 0 for i in range(2, n)):
yield n
first_hundred_primes = primes(100)
print(5 in first_hundred_primes)
print(5 in first_hundred_primes)
print(5 in first_hundred_primes)
print(5 in first_hundred_primes)
print(5 in first_hundred_primes)
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
True
False
False
False
False
Run Code Online (Sandbox Code Playgroud)
我假设一个不是要检查一个对象是否存在于生成器中,但如果是这种情况,为什么它不会抛出一些错误,为什么这个工作?
>>> hundred_generator = range(1,100)
>>> 50 in hundred_generator
True
>>> 50 in hundred_generator
True
>>> 50 in hundred_generator
True
Run Code Online (Sandbox Code Playgroud)
在我检查是否存在某个对象(加快检查)之前,我通常会将生成器变成一个集合,这样可以解决问题,但我非常想知道这里发生了什么?
我想删除b中的所有项目,其中将是[7,8,9,0],我怎么能这样做,这似乎不起作用
In [21]:
a=[1,2,3,4,5]
b=[1,2,3,5,5,5,7,8,9,0]
for i in b:
if i in a:
print i
b.remove(i)
print b
Run Code Online (Sandbox Code Playgroud)
#
Out[21]:
1
3
5
[2, 5, 5, 7, 8, 9, 0]
Run Code Online (Sandbox Code Playgroud) 所以我有一个生成各种矩阵的代码。这些矩阵需要存储在块对角矩阵中。这应该相当简单,因为我可以使用 scipy 的:
scipy.linalg.block_diag(*arrs)
Run Code Online (Sandbox Code Playgroud)
然而我遇到的问题是我不知道需要像这样存储多少个矩阵。我想让事情尽可能简单(自然地)。我想做一些类似的事情:
scipy.linalg.block_diag( matrix_list[ii] for ii in range(len(matrix_list)) )
Run Code Online (Sandbox Code Playgroud)
但这行不通。我可以想到其他一些方法来做到这一点......但对于我认为应该简单得多的事情来说,它们都变得相当复杂。
有谁知道(或知道)执行此操作的简单方法?
提前致谢!
我试图在UNIX shell中获得第n个元素,"第n个元素"存储在变量中.
我尝试了以下awk,但没有一个工作.
awk '{print $NF-$minus_day}'
awk '{print $(NF-$minus_day)}'
awk '{print $(NF-minus_day)}'
Run Code Online (Sandbox Code Playgroud) 是否有一种简单的方法来拼接日期对象列表:
spliced = sortedDates[startDate:endDate]
print spliced
Run Code Online (Sandbox Code Playgroud)
或者这需要枚举?
示例:
sortedDates = [July 1 2012, July 2 2012, July 3 2012, July 4, 2012]
spliced = sortedDates[July 2 2012:July 4 2012]
Run Code Online (Sandbox Code Playgroud)