我有一个LunarLander以谷歌的例子为榜样的Android应用程序.我在真实设备上调试它,(Motorola Droid)用Android 2.0.当方向改变时,程序在a上崩溃NullPointerException.崩溃之前的Logcat:
02-01 00:24:27.956: DEBUG/nate(8358): Starting Game
02-01 00:24:36.878: DEBUG/dalvikvm(1086): GC freed 1788 objects / 92256 bytes in 1389ms
02-01 00:24:38.542: INFO/WindowManager(1021): Setting rotation to 1, animFlags=0
02-01 00:24:38.558: INFO/ActivityManager(1021): Config changed: { scale=1.0 imsi=310/4 loc=en_US touch=3 keys=2/1/2 nav=2/2 orien=2 layout=34}
02-01 00:24:38.620: WARN/UsageStats(1021): Something wrong here, didnt expect org.nifong.leeder to be resumed
02-01 00:24:38.886: DEBUG/nate(8358): New Surface dimensions: 854x442
02-01 00:24:38.886: DEBUG/nate(8358): flies was null
Run Code Online (Sandbox Code Playgroud)
令我担心的第一行是"Something wrong here"在 …
我已经决定学习如何在Python中完成多线程,我做了一个比较,看看我会在双核CPU上获得什么样的性能提升.我发现我的简单多线程代码实际上比顺序等效运行得慢,我无法弄清楚原因.
我设计的测试是生成一个大的随机数列表,然后打印最大值
from random import random
import threading
def ox():
print max([random() for x in xrange(20000000)])
Run Code Online (Sandbox Code Playgroud)
ox()我的英特尔酷睿2双核处理器需要大约6秒才能完成,ox();ox()大约需要12秒.
然后我尝试从两个线程调用ox()来查看完成的速度有多快.
def go():
r = threading.Thread(target=ox)
r.start()
ox()
Run Code Online (Sandbox Code Playgroud)
go()大约需要18秒才能完成,两个结果在1秒内完成打印.为什么这会慢?
我怀疑ox()是自动并行化,因为我查看Windows任务管理器性能选项卡,并ox()在我的python控制台中调用,两个处理器都会跳到大约75%的利用率,直到它完成.Python会自动将事物并行化max()吗?
你能通过使用map和/或reduce函数使这更加pythonic吗?它只是对每一对连续数字的乘积求和.
topo = (14,10,6,7,23,6)
result = 0
for i in range(len(topo)-1):
result += topo[i]*topo[i+1]
Run Code Online (Sandbox Code Playgroud) 我必须制作一个Unity脚本来导入和导出一些3D模型.我正在尝试从我的脚本中引用Servicestack.Redis,以便我可以与redis交谈.它编译得很好,但统一不会加载库.
我已经将Build/Release/MonoDevelop/SericeStack.Redis.zip中的dll复制到了unity中的assets文件夹中(这是正确的吗?)我只是通过克隆https://github.com/ServiceStack/ServiceStack.Redis来获得ServiceStack
当Unity试图加载脚本时,它说
Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.Compile () [0x00000] in …Run Code Online (Sandbox Code Playgroud) 对于Android,我有一个自定义视图,我在onDraw()方法中填充原始形状.
来自Processing背景,我希望draw方法每秒自动调用30次,但很明显,这不是android视图的工作方式.
那么我应该怎样每秒调用这个方法30次呢?
我想要一个Qt窗口,在右边提供以下Dock功能部件的排列方式.
alt text http://img72.imageshack.us/img72/6180/docksonside.png
Qt允许您为指定位置(顶部,底部,左侧或右侧)的addDockWidget方法提供参数,QMainWindow但显然不是如何安排两个QDockWidgets放置在同一侧的方法.
这是添加dock小部件的代码.这使用PyQt4,但对于Qt和C++应该是相同的
self.memUseGraph = mem_use_widget(self)
self.memUseDock = QDockWidget("Memory Usage")
self.memUseDock.setObjectName("Memory Usage")
self.memUseDock.setWidget(self.memUseGraph)
self.addDockWidget(Qt.DockWidgetArea(Qt.RightDockWidgetArea),self.memUseDock)
self.diskUsageGraph = disk_usage_widget(self)
self.diskUsageDock = QDockWidget("Disk Usage")
self.diskUsageDock.setObjectName("Disk Usage")
self.diskUsageDock.setWidget(self.diskUsageGraph)
self.addDockWidget(Qt.DockWidgetArea(Qt.RightDockWidgetArea),self.diskUsageDock)
Run Code Online (Sandbox Code Playgroud)
当这段代码用于将它们添加到右侧时,一个在另一个之上,而不像我制作的屏幕截图.我拍摄这个镜头的方法是在启动程序后用鼠标拖动它们,但我需要它以这种方式启动.
我需要反转一个列表字典,我不知道如何用英语解释它,所以这里有一些代码可以做我想要的.它只需要太多的记忆.
def invert(oldDict):
invertedDict = {}
for key,valuelist in oldDict.iteritems():
for value in valuelist:
try:
entry = invertedDict[value]
if key not in entry:
entry.append(key)
except KeyError:
invertedDict[value] = [key]
return invertedDict
Run Code Online (Sandbox Code Playgroud)
原文是列表的字典,结果是列表的字典.这"颠倒"它.
test = {}
test[1] = [1999,2000,2001]
test[2] = [440,441]
test[3] = [440,2000]
print invert(test)
Run Code Online (Sandbox Code Playgroud)
这给出了:
{2000: [1, 3], 2001: [1], 440: [2, 3], 441: [2], 1999: [1]}
Run Code Online (Sandbox Code Playgroud)
我需要知道这是否可以就地完成,因为我当前的策略是使用我正在使用的字典超过了我机器上的物理内存量.你能想到用发电机做这个的方法吗?
我使用Python的内置XML解析器来加载1.5 gig XML文件,这需要一整天.
from xml.dom import minidom
xmldoc = minidom.parse('events.xml')
Run Code Online (Sandbox Code Playgroud)
我需要知道如何进入并测量其进度,以便我可以显示进度条.有任何想法吗?
minidom有另一个叫做parseString()的方法,它返回一个DOM树,假设你传递的字符串是有效的XML,如果我自己将文件拆分成块并一次一个地传递给parseString,我是否可能合并所有的DOM树在最后重新组合在一起?
我正试图在Project Euler上解决问题50 .不要给我答案或为我解决,只是试着回答这个具体问题.
目标是找到连续素数的最长和,这些素数会增加到低于一百万的素数.我写了一个筛子来找到n下面的所有素数,我已经确认它是正确的.接下来,我将使用以下方法检查连续素数的每个子集的总和:
我有一个空列表sums.对于每个素数,我将它添加到每个元素中sums并检查新的总和,然后我将素数追加到sums.
这是在python中
primes = allPrimesBelow(1000000)
sums = []
for p in primes:
for i in range(len(sums)):
sums[i] += p
check(sums[i])
sums.append(p)
Run Code Online (Sandbox Code Playgroud)
我想知道我是否已经要求check()两个或更多连续素数的总和低于一百万
问题是有一个素数,953,可以写成21个连续素数的总和,但我找不到它.
我可以从维基百科中删除任何页面
import httplib
conn = httplib.HTTPConnection("en.wikipedia.org")
conn.debuglevel = 1
conn.request("GET","/wiki/Normal_Distribution",headers={'User-Agent':'Python httplib'})
r1 = conn.getresponse()
r1.read()
Run Code Online (Sandbox Code Playgroud)
正常的反应将是
reply: 'HTTP/1.0 200 OK\r\n'
header: Date: Sun, 03 Apr 2011 23:49:36 GMT
header: Server: Apache
header: Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
header: Content-Language: en
header: Vary: Accept-Encoding,Cookie
header: Last-Modified: Sun, 03 Apr 2011 17:23:50 GMT
header: Content-Length: 263638
header: Content-Type: text/html; charset=UTF-8
header: Age: 1280309
header: X-Cache: HIT from sq77.wikimedia.org
header: X-Cache-Lookup: HIT from sq77.wikimedia.org:3128
header: X-Cache: MISS from sq66.wikimedia.org
header: X-Cache-Lookup: MISS from …Run Code Online (Sandbox Code Playgroud)